Wrap more tests of implicit time_t == 0 inside isValid.
authorrobertlipe <robertlipe@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Tue, 23 Jul 2013 01:50:49 +0000 (01:50 +0000)
committerrobertlipe <robertlipe@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Tue, 23 Jul 2013 01:50:49 +0000 (01:50 +0000)
git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@4469 f51c46e8-681c-474f-0cfe-069cfd0219fb

gpsbabel/kml.cc
gpsbabel/reference/earth-expertgps-track.kml
gpsbabel/reference/earth-expertgps.kml
gpsbabel/reference/track/gpx_garmin_extensions-kml_track.kml
gpsbabel/reference/track/segmented_tracks-track.kml
gpsbabel/reference/track/segmented_tracks.kml
gpsbabel/reference/track/tcxtest~gpx-course.tcx
gpsbabel/reference/track/tcxtest~gpx-history.tcx
gpsbabel/reference/track/tracks.gpssim
gpsbabel/src/core/datetime.h
gpsbabel/waypt.cc

index fa231033cfb1cc9a0f6ef4125f2295562844e511..c5237733828dcd457dc3473feb1aea8d2b19ffdc 100644 (file)
@@ -890,19 +890,16 @@ static void kml_output_description(const waypoint* pt)
 
 static void kml_recompute_time_bounds(const waypoint* waypointp)
 {
-  gpsbabel::DateTime t = waypointp->GetCreationTime();
-  if (t == 0)
-    return;
-
-  if (!t.isValid())
-    return;
-
-  if (!kml_time_min.isValid() || (t > 0 && t < kml_time_min)) {
-    kml_time_min = t;
-  }
-
-  if (!kml_time_max.isValid() || t > kml_time_max) {
-    kml_time_max = t;
+  if (waypointp->GetCreationTime().isValid())
+  {
+    if(!(kml_time_min.isValid()) ||
+        (waypointp->GetCreationTime() < kml_time_min)) {
+      kml_time_min = waypointp->GetCreationTime();
+    }
+    if (!(kml_time_max.isValid()) ||
+      (waypointp->GetCreationTime() > kml_time_max )) {
+      kml_time_max = waypointp->GetCreationTime();
+    }
   }
 }
 
@@ -1370,7 +1367,7 @@ char* kml_geocache_get_logs(const waypoint* wpt)
                   " %04d-%02d-%02d",
                   t.date().year(),
                   t.date().month(),
-                  t.date().day()),
+                  t.date().day());
         r = xstrappend(r, temp);
         xfree(temp);
       }
@@ -1683,8 +1680,7 @@ static int track_has_time(const route_head* header)
   QUEUE_FOR_EACH(&header->waypoint_list, elem, tmp) {
     waypoint* tpt = (waypoint*)elem;
 
-    // FIXME: implicit time_t test here.
-    if (tpt->GetCreationTime().isValid() && tpt->GetCreationTime() > 0) {
+    if (tpt->GetCreationTime().isValid()) {
       points_with_time++;
       if (points_with_time >= 2) {
         return 1;
@@ -1731,8 +1727,8 @@ static void kml_mt_hdr(const route_head* header)
 
   QUEUE_FOR_EACH(&header->waypoint_list, elem, tmp) {
     waypoint* tpt = (waypoint*)elem;
-    // FIXME: implicit time_t test here.
-    if (tpt->GetCreationTime().isValid() && tpt->GetCreationTime() > 0) {
+
+    if (tpt->GetCreationTime().isValid()) {
       QString time_string = tpt->CreationTimeXML();
       writer->writeOptionalTextElement("when", time_string);
     } else {
index 325123f7372d50553d18278069e7ab04a47424c2..e11ea7c9a9e717fe316888a74540d3c609fbd7b7 100644 (file)
                 <tr><td>Longitude: -91.610350 </td></tr>
                 <tr><td>Latitude: 30.062183 </td></tr>
                 <tr><td>Altitude: 3.281 ft </td></tr>
-                <tr><td>Speed: 0.0 mph </td></tr>
                 <tr><td>Heading: 300.1 </td></tr>
                 <tr><td>Time: 2002-05-25T17:06:21Z </td></tr>
               </table>
index 9922759cf05f2169326be7339a74692e497cbd9b..50a3b1c79bdbc2a9333154674ff945be81686662 100644 (file)
                 <tr><td>Longitude: -91.610350 </td></tr>
                 <tr><td>Latitude: 30.062183 </td></tr>
                 <tr><td>Altitude: 3.281 ft </td></tr>
-                <tr><td>Speed: 0.0 mph </td></tr>
                 <tr><td>Heading: 300.1 </td></tr>
                 <tr><td>Time: 2002-05-25T17:06:21Z </td></tr>
               </table>
index 27b94ab1f9db73422a5c896133b134ffc4411e1d..ee623f5611bfbf21f8faef3bc159b1fb6162413c 100644 (file)
                 <tr><td>Altitude: 0.449 ft </td></tr>
                 <tr><td>Heart rate: 111 </td></tr>
                 <tr><td>Cadence: 151 </td></tr>
-                <tr><td>Speed: 0.0 mph </td></tr>
                 <tr><td>Heading: 360.0 </td></tr>
                 <tr><td>Time: 2008-08-20T07:04:48Z </td></tr>
               </table>
index b142134fab59f22a0ea43a39257a8ea1b00ae552..8050d7f8e93f8105fec82df3faac48b870f47822 100644 (file)
 <tr><td><b>Distance</b> 1.1 mi </td></tr>
 <tr><td><b>Min Alt</b> 0.000 ft </td></tr>
 <tr><td><b>Max Alt</b> 0.000 ft </td></tr>
-<tr><td><b>Max Speed</b> 0.0 mph </td></tr>
-<tr><td><b>Avg Speed</b> 6.1 mph </td></tr>
 <tr><td><b>Start Time</b>2007-07-27T05:24:05Z</td></tr>
 <tr><td><b>End Time</b>2007-07-27T05:35:00Z</td></tr>
 </table>]]>
 <table>
 <tr><td>Longitude: -86.844140 </td></tr>
 <tr><td>Latitude: 35.836146 </td></tr>
-<tr><td>Speed: 0.0 mph </td></tr>
 <tr><td>Heading: 305.9 </td></tr>
 <tr><td>Time: 2007-07-27T05:24:05Z </td></tr>
 </table>
 <table>
 <tr><td>Longitude: -86.843137 </td></tr>
 <tr><td>Latitude: 35.835023 </td></tr>
-<tr><td>Speed: 0.0 mph </td></tr>
 <tr><td>Heading: 160.7 </td></tr>
 <tr><td>Time: 2007-07-27T05:30:00Z </td></tr>
 </table>
 <table>
 <tr><td>Longitude: -86.842084 </td></tr>
 <tr><td>Latitude: 35.835410 </td></tr>
-<tr><td>Speed: 0.0 mph </td></tr>
 <tr><td>Heading: 64.5 </td></tr>
 <tr><td>Time: 2007-07-27T05:31:00Z </td></tr>
 </table>
 <table>
 <tr><td>Longitude: -86.838782 </td></tr>
 <tr><td>Latitude: 35.836744 </td></tr>
-<tr><td>Speed: 0.0 mph </td></tr>
 <tr><td>Heading: 146.9 </td></tr>
 <tr><td>Time: 2007-07-27T05:35:00Z </td></tr>
 </table>
index f566defb3aa477c3b1820bb78d1b5ba860ba9d4e..e0cc455c3047d39066854e970b99a10825880ee1 100644 (file)
 <tr><td><b>Distance</b> 1.1 mi </td></tr>
 <tr><td><b>Min Alt</b> 0.000 ft </td></tr>
 <tr><td><b>Max Alt</b> 0.000 ft </td></tr>
-<tr><td><b>Max Speed</b> 0.0 mph </td></tr>
-<tr><td><b>Avg Speed</b> 6.1 mph </td></tr>
 <tr><td><b>Start Time</b>2007-07-27T05:24:05Z</td></tr>
 <tr><td><b>End Time</b>2007-07-27T05:35:00Z</td></tr>
 </table>]]>
 <table>
 <tr><td>Longitude: -86.844140 </td></tr>
 <tr><td>Latitude: 35.836146 </td></tr>
-<tr><td>Speed: 0.0 mph </td></tr>
 <tr><td>Heading: 305.9 </td></tr>
 <tr><td>Time: 2007-07-27T05:24:05Z </td></tr>
 </table>
 <table>
 <tr><td>Longitude: -86.843137 </td></tr>
 <tr><td>Latitude: 35.835023 </td></tr>
-<tr><td>Speed: 0.0 mph </td></tr>
 <tr><td>Heading: 160.7 </td></tr>
 <tr><td>Time: 2007-07-27T05:30:00Z </td></tr>
 </table>
 <table>
 <tr><td>Longitude: -86.842084 </td></tr>
 <tr><td>Latitude: 35.835410 </td></tr>
-<tr><td>Speed: 0.0 mph </td></tr>
 <tr><td>Heading: 64.5 </td></tr>
 <tr><td>Time: 2007-07-27T05:31:00Z </td></tr>
 </table>
 <table>
 <tr><td>Longitude: -86.838782 </td></tr>
 <tr><td>Latitude: 35.836744 </td></tr>
-<tr><td>Speed: 0.0 mph </td></tr>
 <tr><td>Heading: 146.9 </td></tr>
 <tr><td>Time: 2007-07-27T05:35:00Z </td></tr>
 </table>
index 628fb41fc810350caa34881df63e2f79a9977232..1fe692250c9d312575ee4d01d43132afa7187b89 100644 (file)
             <LongitudeDegrees>-118.7587920</LongitudeDegrees>
           </Position>
           <AltitudeMeters>308.7</AltitudeMeters>
-          <Extensions>
-            <TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
-              <Speed>0.010</Speed>
-            </TPX>
-          </Extensions>
         </Trackpoint>
         <Trackpoint>
           <Time>2008-08-21T13:08:54Z</Time>
index 15e3321947c6a488d57ada60232e938cb655e5eb..d1e44c9d1beee4e208fcf267b9385a733697a8c5 100644 (file)
               <LongitudeDegrees>-118.7587920</LongitudeDegrees>
             </Position>
             <AltitudeMeters>308.7</AltitudeMeters>
-            <Extensions>
-              <TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
-                <Speed>0.010</Speed>
-              </TPX>
-            </Extensions>
           </Trackpoint>
           <Trackpoint>
             <Time>2008-08-21T13:08:54Z</Time>
index 939ffb6e5a7282a243d1d3484d6c06b626bfb7be..fd5c08a4f6f924eebacc7314fa388da8a97a7c53 100644 (file)
@@ -1,4 +1,3 @@
-$FRSPD,0.02*63\r
 $FRWPT,3003.73100,N,09136.62100,W,1.0,250502,170621*63\r
 $FRSPD,0.64*63\r
 $FRWPT,3003.76700,N,09136.63400,W,0.0,250502,170955*69\r
index 929edae9e70df55a183078c44ba0428a4813c3b7..b6ca697b67a24984e894abc86ad6df685bc367f0 100644 (file)
@@ -39,7 +39,7 @@ public:
   // As a crutch, mimic the old behaviour of an uninitialized creation time
   // being 1/1/1970.
   DateTime() {
-    this->setTime_t(0);
+    setTime_t(0);
     t_ = -1;
   }
 
@@ -47,56 +47,62 @@ public:
   DateTime(QDateTime dt) : QDateTime(dt) {}
 
   // Handle time_tm tm = wpt->creation_time;
-  operator const time_t() const { return this->toTime_t(); }
+  operator const time_t() const { return toTime_t(); }
 
   const time_t& operator=(const time_t& t) {
-    this->setTime_t(t);
+    setTime_t(t);
     return t;
   }
 
   time_t operator--(int) {
     setTime_t(toTime_t() - 1);
-    return this->toTime_t();
+    return toTime_t();
   }
 
   time_t operator++(int) {
     setTime_t(toTime_t() + 1);
-    return this->toTime_t();
+    return toTime_t();
   }
 
   time_t operator+=(const time_t& t) {
     setTime_t(toTime_t() + t);
-    return this->toTime_t();
+    return toTime_t();
   }
 
   // Handle       tm = *gmtime(&wpt->creation_time)  ...poorly.
   inline const time_t *operator&() {
-    t_ = this->toTime_t();
+    t_ = toTime_t();
     return &t_;
   }
 
   // Integer form: YYMMDD
   int ymd() const {
-    QDate date(this->date());
-    return date.year() * 10000 + date.month() * 100 + date.day();
+    QDate d(date());
+    return d.year() * 10000 + d.month() * 100 + d.day();
   }
 
   int ddmmyy() const {
-    QDate date(this->date());
-    return date.day() * 10000 + date.month() * 100 + date.year();
+    QDate d(date());
+    return d.day() * 10000 + d.month() * 100 + d.year();
   }
 
   int hms() const {
-    QTime time(this->time());
-    return time.hour() * 10000 + time.minute() * 100 + time.second();
+    QTime t(time());
+    return t.hour() * 10000 + t.minute() * 100 + t.second();
   }
 
+  // Temporary: Override the standard, also handle time_t 0 as invalid.
+  bool isValid() const {
+    return date().isValid() && time().isValid() && toTime_t() > 0;
+  }
+
+
   // Qt 4.6 and under doesn't have msecsTo.  Fortunately, it's easy to
   // provide.  It's a 64-bit because if the times aren't on the same day,
   // the returned value can be quite large.
   int64_t msecsTo(const QDateTime &dt) {
-    qint64 days = this->daysTo(dt);
-    qint64 msecs = this->time().msecsTo(dt.time());
+    qint64 days = daysTo(dt);
+    qint64 msecs = time().msecsTo(dt.time());
     return days * (1000 * 3600 * 24) + msecs;
   }
 
@@ -104,12 +110,12 @@ public:
   // the trailing digits aren't .000.  Always UTC.
   QString toPrettyString() const {
     const char* format;
-    if (this->time().msec()) {
+    if (time().msec()) {
       format = "yyyy-MM-ddTHH:mm:ss.zzzZ";
     } else {
       format = "yyyy-MM-ddTHH:mm:ssZ";
     }
-    return this->toUTC().toString(format);
+    return toUTC().toString(format);
   }
 
 private:
index 6d06a3e40f53a5d166153dd663db4e8af1c06fa2..0716c44fcdc5405cf9899e094c08df0c1b1c0d74 100644 (file)
@@ -158,12 +158,7 @@ waypt_add(waypoint *wpt)
   if ((wpt->longitude < -180) || (wpt->longitude > 180.0))
     fatal("Invalid longitude %f in waypoint %s.\n",
           lon_orig, wpt->shortname ? wpt->shortname : "");
-  if (!wpt->creation_time.isValid()) {
-    warning("%s: Invalid timestamp in waypoint %s.\n",
-            wpt->session->name,
-            wpt->shortname ? wpt->shortname : "");
-    wpt->creation_time = 0;
-  }
+
   /*
    * Some input may not have one or more of these types so we
    * try to be sure that we have these fields even if just by